// Copyright Epic Games, Inc. All Rights Reserved.

#include "LyraInputConfig.h"

// 包含头文件

#include "LyraLogChannels.h"

// 包含项目日志通道

#include UE_INLINE_GENERATED_CPP_BY_NAME(LyraInputConfig)

// UE的内联生成代码包含指令

// 构造函数
ULyraInputConfig::ULyraInputConfig(const FObjectInitializer& ObjectInitializer)
{
}

// 查找原生输入动作的实现
const UInputAction* ULyraInputConfig::FindNativeInputActionForTag(const FGameplayTag& InputTag, bool bLogNotFound) const
{
	// 遍历所有原生输入动作
	for (const FLyraInputAction& Action : NativeInputActions)
	{
		// 检查输入动作是否存在且标签匹配
		if (Action.InputAction && (Action.InputTag == InputTag))
		{
			return Action.InputAction;  // 返回找到的输入动作
		}
	}

	// 如果未找到且需要记录日志
	if (bLogNotFound)
	{
		// 记录错误日志，显示输入标签和配置资产名称
		UE_LOG(LogLyra, Error, TEXT("Can't find NativeInputAction for InputTag [%s] on InputConfig [%s]."), *InputTag.ToString(), *GetNameSafe(this));
	}

	return nullptr;  // 返回空指针表示未找到
}

// 查找技能输入动作的实现
const UInputAction* ULyraInputConfig::FindAbilityInputActionForTag(const FGameplayTag& InputTag, bool bLogNotFound) const
{
	// 遍历所有技能输入动作
	for (const FLyraInputAction& Action : AbilityInputActions)
	{
		// 检查输入动作是否存在且标签匹配
		if (Action.InputAction && (Action.InputTag == InputTag))
		{
			return Action.InputAction;  // 返回找到的输入动作
		}
	}

	// 如果未找到且需要记录日志
	if (bLogNotFound)
	{
		// 记录错误日志，显示输入标签和配置资产名称
		UE_LOG(LogLyra, Error, TEXT("Can't find AbilityInputAction for InputTag [%s] on InputConfig [%s]."), *InputTag.ToString(), *GetNameSafe(this));
	}

	return nullptr;  // 返回空指针表示未找到
}